#ifndef PARTICLEEMITTER_H
#define PARTICLEEMITTER_H

#include <DirectLOL/graphicElement/particles/particle.h>
#include <DirectLOL/graphicElement/3DShape/mesh.h>
#include <ToolBox/physic/physicmanagement.h>

class ParticleEmitter : public GraphicElement
{
    public:

    ParticleEmitter();

    PhysicManagement * physicManagement;
    GLuint particleType;    /*!< Indice utilisé pour définir le type de particule souhaité  */
    Vectorf * velocity;     /*!< Vecteur vitesse initial affecté au particules crées        */

    GLuint lifeSpan;

    int frameCount;         /*!< Compte les frames écoulé depuis la création de l'émétteur */
    int nbParticlePulse;    /*!< nB de particules rajouté à chaque pulsation de l'émétteur  */
    int nbFramePulse;       /*!< nb de frame entre chaque pulsation */

    std::vector<Particle *> particles;

    void DefineParticleType(GLuint);

    void Display();
    void SetPicking(unsigned char x, unsigned char y, unsigned char z);
    void Picking();
    void DeleteParticles();
    void ResolvePhysic();

};

#endif // PARTICLEEMITTER_H
